package com.ticket.system.service;

import java.util.Date;
import java.util.List;
import com.ticket.system.domain.YanchuSession;
import com.ticket.system.domain.vo.SessionTicketVO;
import com.ticket.system.domain.vo.SessionVo;

/**
 * 场次Service接口
 * 
 * @author ruoyi
 * @date 2023-09-26
 */
public interface IYanchuSessionService 
{
    /**
     * 查询场次
     * 
     * @param id 场次主键
     * @return 场次
     */
    public YanchuSession selectYanchuSessionById(Long id);

    /**
     * 查询场次列表
     * 
     * @param yanchuSession 场次
     * @return 场次集合
     */
    public List<YanchuSession> selectYanchuSessionList(YanchuSession yanchuSession);
    public List<SessionVo> selectSessionVoList(Long performId);
    /**
     * 新增场次
     * 
     * @param yanchuSession 场次
     * @return 结果
     */
    public int insertYanchuSession(YanchuSession yanchuSession);

    public int up(Long sessionId);

    /**
     * 修改场次
     * 
     * @param yanchuSession 场次
     * @return 结果
     */
    public int updateYanchuSession(YanchuSession yanchuSession);

    /**
     * 批量删除场次
     * 
     * @param ids 需要删除的场次主键集合
     * @return 结果
     */
    public int deleteYanchuSessionByIds(Long[] ids);

    /**
     * 删除场次信息
     * 
     * @param id 场次主键
     * @return 结果
     */
    public int deleteYanchuSessionById(Long id);

    public int updateChecked(Integer count,Long id);

    public int down(Long id);

    public int cancel(Long id,String cancelTips);

    /**
     * 待销售
     *
     * @return
     */
    List<YanchuSession> getToBeSold(Long operaId);

    /**
     * 待销中
     *
     * @return
     */
    List<YanchuSession> getOnSale(Long operaId);

    /**
     * 待销结束
     *
     * @return
     */
    List<YanchuSession> getEndOfSale(Long operaId);

    /**
     * 所有存在场次的演出id
     *
     * @return
     */
    List<YanchuSession> getInPerForm(Long operaId);

    /**
     * 售票前50的演出
     *
     * @return
     */
    List<Long> getFiftyOnsale();

    /**
     * 场次演出时间段内的演出
     *
     * @param startDate
     * @param endDate
     * @return
     */
    List<Long> getPerformByTime(Date startDate, Date endDate);

    /**
     * 场次列表
     *
     * @param yanchuSession
     * @return
     */
    List<YanchuSession> selectYanchuSessionBy(YanchuSession yanchuSession);

    /**
     * 复制场次
     *
     * @param yanchuSession
     * @return
     */
    int copySession(YanchuSession yanchuSession);

    /**
     * 小程序查询场次（验票端）
     *
     * @param time
     * @param operaId
     * @return
     */
    List<SessionTicketVO> ticketList(String time, Long operaId);

    public void notifyUserOrder();

    /**
     * 查询有场次的日期 2023年12月~当前12个月后（验票端）
     * @param operaId
     * @return
     */
    List<String> dateList(Long operaId);
}
